home *** CD-ROM | disk | FTP | other *** search
/ BCI NET 2 / BCI NET 2.iso / archives / programming / source / xdme_1.84_src.lha / XDME / Src / Mod / mem.c < prev    next >
Encoding:
C/C++ Source or Header  |  1994-12-03  |  2.6 KB  |  109 lines

  1. /*
  2.  * $Id: mem.c 1.3 1994/09/20 22:10:57 b_noll Exp b_noll $
  3.  *
  4. **  Dieses modul ist die Memory import schnittstelle
  5. **  fuer menu... und key...
  6. **  ie. beide modulkomplexe sollten keine
  7. **    anderen als die hier exportierten alloc/free - funktionen
  8. **    verwenden.
  9. **  sobald sichergestellt ist, dass aller in diesen beiden modulen
  10. **  allozierter speicher wieder freigegeben wird, sollte
  11. **  malloc in AllocMem und free in FreeMem umgewandelt werden,
  12. **  um wenigstens einen kleineren Geschwindigkeitszuwachs zu
  13. **  erzeugen;
  14. **
  15. **    (this is done for sure)
  16.  *
  17.  * $Log: mem.c $
  18.  * Revision 1.3  1994/09/20  22:10:57  b_noll
  19.  * *** empty log message ***
  20.  *
  21.  * Revision 1.3  1994/09/09  12:31:30  digulla
  22.  * added new style Prototypes, DEFCMD and DEFHELP
  23.  *
  24.  * Revision 1.2  1994/08/30  11:05:55  digulla
  25.  * added const to Prototype of DupFunc
  26.  *
  27.  * Revision 1.1  1994/08/14  12:30:15  digulla
  28.  * Initial revision
  29.  *
  30. */
  31.  
  32.  
  33. /* #include "defs.h" */
  34.  
  35. #include <proto/exec.h>
  36. #include "xdme_base.h"
  37.  
  38.  
  39. /* #define  DEBUG_C */
  40. /* #include "debug_mem.h" */
  41.  
  42.  
  43. Prototype APTR AllocFunc (long siz, long typ);
  44. APTR AllocFunc (long siz, long typ)
  45. {
  46.     if (siz) {
  47.     /* --- Wir koennen jetzt AllocMem und FreeMem verwenden, nehme ich an; alle Allokationen in Menu/key... sollten jetzt bei PgmEnde wieder freigegeben werden */
  48.     /* return (malloc (siz)); */
  49.     return (AllocMem (siz, typ));
  50.     } /* if */
  51.  
  52.     return (NULL);
  53. } /* AllocFunc */
  54.  
  55.  
  56. Prototype void FreeFunc (APTR mem, long siz);
  57. void FreeFunc (APTR mem, long siz)
  58. {
  59.     /* --- Wir koennen jetzt AllocMem und FreeMem verwenden, nehme ich an; alle Allokationen in Menu/key... sollten jetzt bei PgmEnde wieder freigegeben werden */
  60.  
  61.     if (mem) {
  62.     FreeMem (mem, siz);
  63.     /* free (mem); */
  64.     } /* if */
  65. } /* FreeFunc */
  66.  
  67.  
  68. /*
  69.  * Alle folgenden Funktionen sind
  70.  * verwendbar wie Makros;
  71.  * sie verwenden samt und sonders AllocFunc und FreeFunc,
  72.  * daher reicht es, diese beiden Functionen umzudefinieren,
  73.  * um andere memeory-routinen zu verwenden
  74.  */
  75.  
  76. /*
  77.  *  Deallociere den string str
  78.  */
  79.  
  80. Prototype void DeallocFunc (char * str);
  81. void DeallocFunc (char * str)
  82. {
  83.     if (str) {
  84.     FreeFunc (str, strlen (str)+1);
  85.     } /* if */
  86. } /* DeallocFunc */
  87.  
  88.  
  89. /*
  90.  *  Dupliziere den string str
  91.  */
  92.  
  93. Prototype char * DupFunc (const char * str, long typ);
  94. char * DupFunc (const char * str, long typ)
  95. {
  96.     char * new;
  97.     if (str && (new = AllocFunc(strlen(str)+1, typ))) {
  98.     strcpy (new, str);
  99.     return (new);
  100.     } /* if */
  101.  
  102.     return (NULL);
  103. } /* DupFunc */
  104.  
  105.  
  106. /******************************************************************************
  107. ***** END mem.c
  108. ******************************************************************************/
  109.